import java.util.List;

//707设计链表
class ListNode1{
    int data;
    ListNode1 next;
    public  ListNode1(int data){//构造方法1
        this.data = data;
        this.next = null;
    }
    public  ListNode1(int data,ListNode1 node){//构造方法2
        this.data = data;
        this.next = node;
    }
    public int get(int index,ListNode1 start){
        int temp = 0;
        while(start!=null){
            if(index == temp){
                return start.data;
            }
            temp++;
            start = start.next;
        }
        return -1;
    }
    public ListNode1 addAtHead(ListNode1 start,int val){//添加头结点
        var node = new ListNode1(val,start);
        return node;//将新的头结点返回回去
    }

    public ListNode1  addAtTail(ListNode1 start,int val){//在链表尾添加一个结点 ,默认是链表不为空
        if(start==null){
            var node = new ListNode1(val);
            return node;
        }
        ListNode1 temp = start;
        while (temp!=null){
            if(temp.next==null){
                var node =new ListNode1(val);
                temp.next = node;
            }
        }
        return start;
    }

    public ListNode1 addAtIndex(ListNode1 start,int val,int index){//插入结点
        if(index<0){
            var node = new ListNode1(val,start);
            return start;
        }
        int temp =0;//记录下标
        ListNode1 tempNode = start;//记录链表头结点
        while (tempNode!=null){
            if(temp+1==index&&tempNode.next!=null){//如果不是最后一个结点
                var node = new ListNode1(val,tempNode.next);
                //那如果是第一个结点呢？还是加一个虚拟结点以免出现各种各样的错误
                start.next = node;
                return start;
            }
            if(temp+1==index&&tempNode.next==null){//如果是最后一个结点
                var node = new ListNode1(val);
                tempNode.next = node;
                return start;
            }
            temp++;
            tempNode = tempNode.next;
        }
        return start;
    }

    public  int deleteAtIndex(ListNode1 start,int index){//删除指定下标的结点
        int temp = 0;
        while (start!=null){
            if(temp+1==index&&start.next!=null){
                start.next = start.next.next;
            }
            temp++;
        }
        return  -1;
    }

}
public class designLinkList {
    public static void main(String[] args) {
        int[] list = new int[]{1,2,3,4,5,6,7};
        //建立链表，从后往前进行建立链表
        ListNode a = new ListNode(list[list.length-1]);
        for(int i=list.length-2;i>=0;i--){
            ListNode b = new ListNode(list[i],a);
            a = b;
        }
    }
}
